<?php
function getCode($num, $h, $fscale=.65) {
	$l = strlen($num);
	$fsize=$h*$fscale;
	$w = $h * $l;
	// 去掉了 0 1 O l 等
	if(is_string($num)){
		$code=$num;
		$num=strlen($code);
	}else{
		$str = "23456789abcdefghijkmnpqrstuvwxyz";
		$code = '';
		for ($i = 0; $i < $num; $i++) {
			$code .= $str[mt_rand(0, strlen($str)-1)];
		}
	}
	//将生成的验证码写入session，备验证页面使用
	//$_SESSION["helloweba_char"] = $code;
	//创建图片，定义颜色值
	Header("Content-type: image/PNG");
	$im = imagecreate($w, $h);

	//每个字一种颜色
	for($i=0;$i<$l;$i++){
		$black[$i] = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));
	}
	//$gray = imagecolorallocate($im, 118, 151, 199);
	$bgcolor = imagecolorallocate($im, 235, 236, 237);

	//画背景
	imagefilledrectangle($im, 0, 0, $w, $h, $bgcolor);
	//画边框
	//imagerectangle($im, 0, 0, $w-1, $h-1, $gray);

	//在画布上随机生成大量点，起干扰作用;
	for ($i = 0; $i < 80; $i++) {
		imagesetpixel($im, rand(0, $w), rand(0, $h), $black[rand(0,$l-1)]);
	}

	//在画布上随机生成干扰线;
	for ($i = 0; $i < 5; $i++) {
		imageline($im, rand(0, $w*.5), rand(0, $h),rand($w*.5, $w), rand(0, $h), $black[rand(0,$l-1)]);
	}

	//将字符随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
	for ($i = 0; $i < $num; $i++) {
		$xpos[$i]=rand($fsize, $h);
	}
	$strx = ($w-array_sum($xpos))*.5;
	for ($i = 0; $i < $num; $i++) {
		$strpos = rand(1, $h*(1-$fscale)-1)+$fsize;
		imagettftext($im, $fsize, rand(-20,20), $strx + rand(0, $xpos[$i]-$fsize), $strpos, $black[$i], dirname(__FILE__).'/tahomabd.ttf', substr($code, $i, 1));
		$strx +=  $xpos[$i];
	}
	imagepng($im);
	imagedestroy($im);
}